		template<KERNEL_CALL_TYPE_LIST>
		MultipleWaitHandle operator ()(KERNEL_CALL_PARAMETER_LIST)
		{
			int batches = (globalSize + batchSize - 1)/batchSize;
			MultipleWaitHandle result(batches);
			int offset = 0;
			for (int i = 0; i<batches; i++)
			{
				result.Add(kernel.bind(queue, cl::NDRange(min(batchSize, globalSize - offset)), cl::NDRange(groupSize))
					(offset, KERNEL_CALL_ARGUMENT_LIST));
				offset += batchSize;
			}
			return result;
		}